#  爬取图片的代码 经济管理学院为例，因无法正常爬取网页全部内容，我们选择用了webdriver，有兴趣的同学，可以自行理解官网
import copy
import time
import os
import requests
from openpyxl import Workbook
from lxml import etree
from selenium import webdriver
from selenium.webdriver.common.by import By
def main():
    driver = webdriver.Chrome()
    # 加载页面 百度首页
    driver.get("填写你想爬取的网址")
    # 保存当前界面
    driver.save_screenshot("baidu.png")
    #刚刚开始的点击搜索按钮
    driver.find_element(by=By.NAME,value='submit').submit()
    time.sleep(1)
    #  获取当前页面
    hands= driver.window_handles
    driver.switch_to.window(hands[1])
    #  搜索关键字
    driver.find_element(by=By.NAME,value='keyword').send_keys("交流")
    #  高级搜索
    driver.execute_script('$(".search_tool > a").click()')
    # 开始日期
    driver.execute_script("$('#searchs_6').datebox('setValue', '2019-03-01')")
    # 结束日期
    driver.execute_script("$('#searchs_7').datebox('setValue', '2023-07-04')")
    # 选择图片
    driver.execute_script('doSearchByType("2")')
    while True:
        hrefs=driver.execute_script('var arr=[]; $(".results_list .item_title > a").map((k,a)=> arr.push($(a).attr("href")));return arr;')
        for hre in hrefs:
            getImgs(hre)
        try:
            driver.find_element(by=By.CLASS_NAME, value='next').click();
        except:
            break;
    time.sleep(2)
    driver.quit()
def getImgs (url):
    print('下载网页数据',url)
    headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}
    response = requests.get(url=url,headers=headers)
    response.encoding ='UTF-8'
    html = etree.HTML(response.text)
    sanmings = html.xpath('/html/body/div[3]/div/div[2]/div/div/div')
    for sanming in sanmings:
        html1 = etree.HTML(etree.tounicode(sanming))
        #  定位名称元素
        name =html1.xpath('//div/h1[@class="article__title"]/text()')[0]
        names= name.split('|')[0]
        #  定位发布时间元素
        # print('发布时间:' + html1.xpath('//div/p[@class="article__metas"]/text()')[0])
        date= html1.xpath('//div/p[@class="article__metas"]/text()')[0]
        dates= date.split('：')[1]
        #  定位图片元素 有网页没有图片
        imgs=html1.xpath('//div/p/img/@src');
        index=0
        for imageUrl in imgs:
            # 请求下载图片地址
            index+=1
            downloadImage(index,names,dates,imageUrl)

def downloadImage(index,names,dates,imageUrl):
    imageUrl='填写照片前部分的网址'+imageUrl
    print("下载图片",imageUrl)
    image=requests.get(url= imageUrl).content
    #  图片名称
    image_name = str(names + '+' + dates + "_" + str(index))
    img_path = 'piclitl/' + image_name
    # 判断有没有图片的文件夹
    dir_name = '../SMING/'
    if not os.path.exists(dir_name):
        os.mkdir(dir_name)
    # 保存图片
    with open(dir_name + str(image_name) + '.jpg', 'wb') as f:
        f.write(image)
        print(image_name + '下载成功___________')


main()